/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Transaksi;

import Kasir.Kasir;
import KonekDB.Koneksi;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Astri
 */
public class TransaksiKontrol {

    Connection konek;
    private static TransaksiKontrol transaksiKontrol;
    private Kasir kasir;

    public TransaksiKontrol(Connection konek) {
        this.konek = konek;
    }

    public static TransaksiKontrol getKoneksiKontrol() {
        Koneksi k = new Koneksi();
        if (transaksiKontrol == null) {
            transaksiKontrol = new TransaksiKontrol(k.getConnection());
        }
        return transaksiKontrol;
    }

    public void tambahTransaksi(Transaksi transaksi) throws SQLException {
        PreparedStatement prepare = null;
        String noNota = transaksi.getNo_Nota();
        String namaPenyewa = transaksi.getNama_Penyewa();
        String idPenyewa = transaksi.getId_Penyewa();
        String alamatPenyewa = transaksi.getAlamat_Penyewa();
        String noTlp = transaksi.getNo_Tlp();
        String kodeMobil = transaksi.getKode_Mobil();
        String tglPinjam = transaksi.getTgl_Pinjam();
        int waktuPinjam = transaksi.getWaktu_Pinjam();
        int lamaPinjam = transaksi.getLama_Pinjam();
        String tglKembali = transaksi.getTgl_Kembali();
        int waktuKembali = transaksi.getWaktu_Kembali();
        double totalBiaya = transaksi.getTotal_Biaya();
        double denda = transaksi.getDenda();
        String statusBayar = transaksi.getStatus_Bayar();


        String sql = "call tambahTransaksi(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        prepare = konek.prepareStatement(sql);
        prepare.setString(1, noNota);
        prepare.setString(2, namaPenyewa);
        prepare.setString(3, idPenyewa);
        prepare.setString(4, alamatPenyewa);
        prepare.setString(5, noTlp);
        prepare.setString(6, kodeMobil);
        prepare.setString(7, tglPinjam);
        prepare.setInt(8, waktuPinjam);
        prepare.setInt(9, lamaPinjam);
        prepare.setString(10, tglKembali);
        prepare.setInt(11, waktuKembali);
        prepare.setDouble(12, totalBiaya);
        prepare.setDouble(13, denda);
        prepare.setString(14, statusBayar);
        prepare.executeUpdate();
    }

    public Transaksi cariTransaksi(Transaksi transaksi) throws SQLException {
        CallableStatement cl = null;
        String sql = "call cariTransaksi(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        cl = konek.prepareCall(sql);
        cl.setString(1, transaksi.getNo_Nota());
        cl.registerOutParameter(2, java.sql.Types.VARCHAR);
        cl.registerOutParameter(3, java.sql.Types.VARCHAR);
        cl.registerOutParameter(4, java.sql.Types.VARCHAR);
        cl.registerOutParameter(5, java.sql.Types.VARCHAR);
        cl.registerOutParameter(6, java.sql.Types.VARCHAR);
        cl.registerOutParameter(7, java.sql.Types.VARCHAR);
        cl.registerOutParameter(8, java.sql.Types.INTEGER);
        cl.registerOutParameter(9, java.sql.Types.INTEGER);
        cl.registerOutParameter(10, java.sql.Types.VARCHAR);
        cl.registerOutParameter(11, java.sql.Types.INTEGER);
        cl.registerOutParameter(12, java.sql.Types.DOUBLE);
        cl.registerOutParameter(13, java.sql.Types.DOUBLE);
        cl.registerOutParameter(14, java.sql.Types.VARCHAR);
        cl.execute();

        String namaPenyewa = cl.getString(2);
        String idPenyewa = cl.getString(3);
        String alamatPenyewa = cl.getString(4);
        String noTlp = cl.getString(5);
        String kodeMobil = cl.getString(6);
        String tglPinjam = cl.getString(7);
        int waktuPinjam = cl.getInt(8);
        int lamaPinjam = cl.getInt(9);
        String tglKembali = cl.getString(10);
        int waktuKembali = cl.getInt(11);
        double totalBiaya = cl.getDouble(12);
        double denda = cl.getDouble(13);
        String statusBayar = cl.getString(14);
        cl.execute();

        transaksi.setNama_Penyewa(namaPenyewa);
        transaksi.setId_Penyewa(idPenyewa);
        transaksi.setAlamat_Penyewa(alamatPenyewa);
        transaksi.setNo_Tlp(noTlp);
        transaksi.setKode_Mobil(kodeMobil);
        transaksi.setTgl_Pinjam(tglPinjam);
        transaksi.setWaktu_Pinjam(waktuPinjam);
        transaksi.setLama_Pinjam(lamaPinjam);
        transaksi.setTgl_Kembali(tglKembali);
        transaksi.setWaktu_Kembali(waktuKembali);
        transaksi.setTotal_Biaya(totalBiaya);
        transaksi.setDenda(denda);
        transaksi.setStatus_Bayar(statusBayar);
        return transaksi;
    }

    public double hitungTotal(double bayar, double denda) {
        return bayar + denda;
    }

//    public static boolean isAnyRent(String Kode_Mobil) {
//        try {
//            String sewa = "";
//            String sql = "SELECT Status_Mobil from mobil where Kode_Mobil='" + Kode_Mobil + "';";
//            Statement st = konek.createStatement();
//            ResultSet rs = st.executeQuery(sql);
//            int p = 0;
//            rs.beforeFirst();
//            while (rs.next()) {
//                sewa += rs.getString(1);
//                p++;
//            }
//            if (p > 1 && sewa.equals("Disewakan")) {
//                return true;
//            } else {
//                return false;
//            }
//        } catch (SQLException ex) {
//            JOptionPane.showMessageDialog(null, ex + "::\nTidak dapat terkoneksi ke database", "Error", JOptionPane.ERROR_MESSAGE);
//            Logger.getLogger(TransaksiKontrol.class.getName()).log(Level.SEVERE, null, ex);
//            return false;
//        }
//    }
//    public double hitungDenda (double bayar, int lama, ){
//        if ()
//    }
}
